package com.linked.universal.common;

import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author Bluerain
 * @version 1.0
 * @data 2025/5/8 10:43
 * @describe 平台统一文件处理类，接收MultipartFile文件，用于直接给minio上传文件的方法传值，
 * public void uploadFile(MultipartFile file){
 *     try(LinkedFile linkedFile = new LinkedFile(file)){
 *         minioUtils.upload(linkedFile);
 *     }catch(Exception e){
 *         throw new RuntimeException(e);
 *     }
 * }
 *
 *
 */
public class LinkedFile implements AutoCloseable {

    /**
     * @describe 文件原名称
     */
    private String originName;
    /**
     * @describe 文件类型
     */
    private String contentType;

    /**
     * @describe 文件存储路径
     */
    private String filePath;
    /**
     * @describe 文件存储桶
     */
    private String bucket;
    /**
     * @describe 文件大小
     */
    private Long fileSize;
    /**
     * @describe 文件HASH值
     */
    private String fileHash;
    /**
     * @describe 文件输入流
     * */
    private InputStream inputStream;

    public LinkedFile(MultipartFile file) throws IOException {
        this.originName = file.getOriginalFilename();
        this.inputStream = file.getInputStream();
        this.contentType = file.getContentType();
        this.fileSize = file.getSize();
    }

    @Override
    public void close() throws Exception {
        if (this.inputStream != null) {
            this.inputStream.close();
        }
    }
}
